package main

import (
	"fmt"
)

func main() {
	// 创建一个新的前缀树实例
	trie := NewTrie()

	// 添加一些中文违禁词到前缀树中
	trie.Add("坏词", "邪恶词", "可怕词", "你好世界")
	fmt.Println("前缀树已添加违禁词: 坏词, 邪恶词, 可怕词, 你好世界")

	// 检测文本是否包含违禁词
	text1 := "这句话里包含坏词。"
	isContain := trie.Is(text1)
	fmt.Printf("文本 '%s' 是否包含违禁词: %t\n", text1, isContain) // 输出: true

	text2 := "这是一个干净的句子。"
	isContain2 := trie.Is(text2)
	fmt.Printf("文本 '%s' 是否包含违禁词: %t\n", text2, isContain2) // 输出: false

	text3 := "你好世界，这是一个测试。"
	isContain3 := trie.Is(text3)
	fmt.Printf("文本 '%s' 是否包含违禁词: %t\n", text3, isContain3) // 输出: true

	// 获取文本中包含的所有违禁词
	text4 := "这个句子包含邪恶词和坏词。"
	words := trie.Get(text4)
	fmt.Printf("文本 '%s' 中包含的违禁词: %v\n", text4, words) // 输出: [坏词 邪恶词]

	text5 := "你好世界, 可怕词在这里。"
	words2 := trie.Get(text5)
	fmt.Printf("文本 '%s' 中包含的违禁词: %v\n", text5, words2) // 输出: [你好世界 可怕词]

	// 替换句子中的违禁词
	sentence := "这句话有坏词和可怕词，这是一个邪恶词。"
	replacedSentence := trie.Replace(sentence, "*")
	fmt.Printf("原文: '%s'\n替换后: '%s'\n", sentence, replacedSentence)
	// 输出:
	// 原文: '这句话有坏词和可怕词，这是一个邪恶词。'
	// 替换后: '这句话有**和***，这是一个***。'

	sentence2 := "使用你好世界这个词语是不好的。"
	replacedSentence2 := trie.Replace(sentence2, "#")
	fmt.Printf("原文: '%s'\n替换后: '%s'\n", sentence2, replacedSentence2)
	// 输出:
	// 原文: '使用你好世界这个词语是不好的。'
	// 替换后: '使用####这个词语是不好的。'

	// 移除指定的违禁词
	trie.Remove("邪恶词")
	fmt.Println("移除了违禁词: 邪恶词")
	text6 := "这句话再次包含邪恶词。"
	isContain4 := trie.Is(text6)
	fmt.Printf("文本 '%s' 是否包含违禁词: %t (移除 邪恶词 后)\n", text6, isContain4) // 输出: false
	words3 := trie.Get(text6)
	fmt.Printf("文本 '%s' 中包含的违禁词: %v (移除 邪恶词 后)\n", text6, words3) // 输出: []

	// 移除所有违禁词
	trie.RemoveAll()
	fmt.Println("移除了所有违禁词")
	text7 := "现在，即使是坏词也不是坏词了。"
	isContain5 := trie.Is(text7)
	fmt.Printf("文本 '%s' 是否包含违禁词: %t (移除所有词后)\n", text7, isContain5) // 输出: false
	words4 := trie.Get(text7)
	fmt.Printf("文本 '%s' 中包含的违禁词: %v (移除所有词后)\n", text7, words4) // 输出: []
}
